package com.zyl.blog.tasks.mapper;

import com.github.yulichang.base.MPJBaseMapper;
import com.zyl.blog.common.domain.task.bean.TaskInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Optional;

/**
 * @version v1.0
 * @ProjectName: Personal_Blog_Server
 * @Package: com.zyl.blog.tasks.mapper
 * @ClassName: TaskInfoMapper
 * @Description: 业务信息数据层
 * @Author FinalFantasy
 * @Date 2025/8/12-10:44
 */
public interface TaskInfoMapper extends MPJBaseMapper<TaskInfo> {

    /**
     * 根据任务名称和用户名查询任务信息
     *
     * @param taskName 任务名称
     * @param username 用户名
     * @return 任务信息（Optional包装）
     */
    Optional<TaskInfo> findTaskByDoubleName(
            @Param("taskName") String taskName,
            @Param("username") String username,
            @Param("status") Boolean status
    );

    /**
     * 根据用户名查询任务信息
     *
     * @param username  用户名
     * @return {@link List }<{@link TaskInfo }>
     */
    List<TaskInfo> findByUsername(String username);

    /**
     * 根据任务名称和所属用户恢复被逻辑删除的任务
     * @param taskName  任务名称
     * @param username  用户名
     * @return int
     */
    int restoreTask(
            @Param("taskName") String taskName,
            @Param("username") String username
    );

    /**
     * 根据任务名称和所属用户物理删除任务
     * @param taskName  任务名称
     * @param username  用户名
     * @return int
     */
    int physicalDeleteTask(
            @Param("taskName") String taskName,
            @Param("username") String username
    );

    /**
     * 根据任务名称和所属用户逻辑删除任务
     * @param taskName  任务名称
     * @param username  用户名
     * @return int
     */
    int logicDeleteTask(
            @Param("taskName") String taskName,
            @Param("username") String username
    );
}
